
<!DOCTYPE HTML>
<html lang="Chinese" >
    <head>
        <title>配置文件 · freeRTOS中文文档</title>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
        <meta name="description" content="">
        <meta name="generator" content="GitBook 3.2.0">
        <meta name="author" content="tangguocheng">
        
        
    
    <link rel="stylesheet" href="../../gitbook/style.css">

    
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-prismx/prism.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-fontsettings/website.css">
                
            
                
                <link rel="stylesheet" href="../../gitbook/gitbook-plugin-theme-comscore/test.css">
                
            
        

    

    
        
    
        
    
        
    
        
    
        
    

        
    
    
    <meta name="HandheldFriendly" content="true"/>
    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <link rel="apple-touch-icon-precomposed" sizes="152x152" href="../../gitbook/images/apple-touch-icon-precomposed-152.png">
    <link rel="shortcut icon" href="../../gitbook/images/favicon.ico" type="image/x-icon">

    
    <link rel="next" href="跟踪特性.html" />
    
    
    <link rel="prev" href="../源代码组织结构/源代码组织结构.html" />
    

    </head>
    <body>
        
<div class="book">
    <div class="book-summary">
        
            
            
                <nav role="navigation">
                


<ul class="summary">
    
    
    
        
        <li>
            <a href="http://www.xn--4gqa63c686ta68iba.ren/" target="_blank" class="custom-link">博客</a>
        </li>
    
    

    
    <li class="divider"></li>
    

    
        
        
    
        <li class="chapter " data-level="1.1" data-path="../../">
            
                <a href="../../">
            
                    
                    关于
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2" data-path="../../简介/freeRTOS介绍.html">
            
                <a href="../../简介/freeRTOS介绍.html">
            
                    
                    简介
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.2.1" data-path="../../简介/编码规则和风格.html">
            
                <a href="../../简介/编码规则和风格.html">
            
                    
                    编码规则和风格
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.2" data-path="../../简介/许可.html">
            
                <a href="../../简介/许可.html">
            
                    
                    许可
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.2.3" data-path="../../简介/快速开始指南.html">
            
                <a href="../../简介/快速开始指南.html">
            
                    
                    快速开始指南
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3" data-path="../../入门/readme.html">
            
                <a href="../../入门/readme.html">
            
                    
                    入门
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1" data-path="../../入门/任务和协程/readme.html">
            
                <a href="../../入门/任务和协程/readme.html">
            
                    
                    任务和协程
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.1.1" data-path="../../入门/任务和协程/任务.html">
            
                <a href="../../入门/任务和协程/任务.html">
            
                    
                    任务
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.1.2" data-path="../../入门/任务和协程/协程.html">
            
                <a href="../../入门/任务和协程/协程.html">
            
                    
                    协程
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3.2" data-path="../../入门/通信机制/readme.html">
            
                <a href="../../入门/通信机制/readme.html">
            
                    
                    通信机制
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.3.2.1" data-path="../../入门/通信机制/队列.html">
            
                <a href="../../入门/通信机制/队列.html">
            
                    
                    队列
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2.2" data-path="../../入门/通信机制/二值信号量.html">
            
                <a href="../../入门/通信机制/二值信号量.html">
            
                    
                    二值信号量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2.3" data-path="../../入门/通信机制/计数信号量.html">
            
                <a href="../../入门/通信机制/计数信号量.html">
            
                    
                    计数信号量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2.4" data-path="../../入门/通信机制/互斥量.html">
            
                <a href="../../入门/通信机制/互斥量.html">
            
                    
                    互斥量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2.5" data-path="../../入门/通信机制/递归互斥量.html">
            
                <a href="../../入门/通信机制/递归互斥量.html">
            
                    
                    递归互斥量
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.2.6" data-path="../../入门/通信机制/任务通知.html">
            
                <a href="../../入门/通信机制/任务通知.html">
            
                    
                    任务通知
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.3.3" data-path="../../入门/事件组/事件组.html">
            
                <a href="../../入门/事件组/事件组.html">
            
                    
                    事件组
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.3.4" data-path="../../入门/软件定时器/软件定时器.html">
            
                <a href="../../入门/软件定时器/软件定时器.html">
            
                    
                    软件定时器
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    
        <li class="chapter " data-level="1.4" data-path="../readme.md">
            
                <span>
            
                    
                    进阶
            
                </a>
            

            
            <ul class="articles">
                
    
        <li class="chapter " data-level="1.4.1" data-path="../源代码组织结构/源代码组织结构.html">
            
                <a href="../源代码组织结构/源代码组织结构.html">
            
                    
                    源代码组织结构
            
                </a>
            

            
        </li>
    
        <li class="chapter active" data-level="1.4.2" data-path="配置文件.html">
            
                <a href="配置文件.html">
            
                    
                    配置文件
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.3" data-path="跟踪特性.html">
            
                <a href="跟踪特性.html">
            
                    
                    跟踪特性
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.4" data-path="低功耗支持.html">
            
                <a href="低功耗支持.html">
            
                    
                    低功耗支持
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.5" data-path="运行时间统计.html">
            
                <a href="运行时间统计.html">
            
                    
                    运行时间统计
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.6" data-path="队列集合.html">
            
                <a href="队列集合.html">
            
                    
                    队列集合
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.7" data-path="中断延迟.html">
            
                <a href="中断延迟.html">
            
                    
                    中断延迟
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.8" data-path="静态分配与动态分配.html">
            
                <a href="静态分配与动态分配.html">
            
                    
                    静态和动态内存分配
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.9" data-path="内存管理.html">
            
                <a href="内存管理.html">
            
                    
                    内存管理
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.10" data-path="栈溢出检测.html">
            
                <a href="栈溢出检测.html">
            
                    
                    栈溢出检测
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.11" data-path="钩子函数.html">
            
                <a href="钩子函数.html">
            
                    
                    钩子函数
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.12" data-path="线程本地存储.html">
            
                <a href="线程本地存储.html">
            
                    
                    线程本地存储
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.13" data-path="移植指南.html">
            
                <a href="移植指南.html">
            
                    
                    移植指南
            
                </a>
            

            
        </li>
    
        <li class="chapter " data-level="1.4.14" data-path=".">
            
                <span>
            
                    
                    在windows上模拟
            
                </a>
            

            
        </li>
    

            </ul>
            
        </li>
    

    

    <li class="divider"></li>

    <li>
        <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
            Published with GitBook
        </a>
    </li>
</ul>


                </nav>
            
        
    </div>

    <div class="book-body">
        
            <div class="body-inner">
                
                    

<div class="book-header" role="navigation">
    

    <!-- Title -->
    <h1>
        <i class="fa fa-circle-o-notch fa-spin"></i>
        <a href="../.." >配置文件</a>
    </h1>
</div>




                    <div class="page-wrapper" tabindex="-1" role="main">
                        <div class="page-inner">
                            
                                <section class="normal markdown-section">
                                
                                <p>freeRTOS&#x901A;&#x8FC7;<code>FreeRTOSConfig.h</code>&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x5B9E;&#x73B0;&#x5B9A;&#x5236;&#x5316;&#x3002;&#x6BCF;&#x4E2A;&#x5206;&#x652F;&#x90FD;&#x9700;&#x8981;&#x5305;&#x542B;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x3002;<code>FreeRTOSConfig.h</code>&#x5B9E;&#x73B0;&#x4E86;RTOS&#x5185;&#x6838;&#x7684;&#x88C1;&#x526A;&#xFF0C;&#x9700;&#x8981;&#x6839;&#x636E;&#x5B9E;&#x9645;&#x5E94;&#x7528;&#x60C5;&#x51B5;&#x5408;&#x7406;&#x914D;&#x7F6E;&#xFF0C;&#x4E5F;&#x56E0;&#x6B64;&#xFF0C;&#x8FD9;&#x4E2A;&#x6587;&#x4EF6;&#x662F;&#x5E94;&#x7528;&#x76F8;&#x5173;&#x7684;&#xFF0C;&#x800C;&#x975E;RTOS&#x5185;&#x6838;&#x3002;</p><p>&#x6BCF;&#x4E2A;demo&#x4F8B;&#x7A0B;&#x4E2D;&#x90FD;&#x6709;&#x4E00;&#x4E2A;&#x7279;&#x5B9A;&#x7684;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF0C;&#x6709;&#x4E9B;&#x5206;&#x652F;&#x56E0;&#x4E3A;&#x592A;&#x8001;&#x4E86;&#x53EF;&#x80FD;&#x6CA1;&#x6709;&#x5168;&#x90E8;&#x5305;&#x542B;&#x6240;&#x6709;&#x7684;&#x914D;&#x7F6E;&#x9009;&#x9879;&#xFF0C;<strong>freeRTOS&#x6E90;&#x7801;&#x4E2D;&#x4F1A;&#x5C06;&#x90A3;&#x4E9B;&#x65E0;&#x914D;&#x7F6E;&#x7684;&#x914D;&#x7F6E;&#x9009;&#x9879;&#x8BBE;&#x5B9A;&#x4E3A;&#x7CFB;&#x7EDF;&#x7684;&#x9ED8;&#x8BA4;&#x503C;</strong>&#x3002;</p><p>&#x4E0B;&#x9762;&#x662F;&#x4E00;&#x4E2A;&#x5178;&#x578B;&#x7684;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x914D;&#x7F6E;&#x4EE3;&#x7801;&#xFF1A;</p><pre><code><span class="token comment" spellcheck="true">#ifndef FREERTOS_CONFIG_H</span>
<span class="token comment" spellcheck="true">#define FREERTOS_CONFIG_H</span>

/* &#x5305;&#x542B;&#x5E94;&#x7528;&#x6240;&#x9700;&#x7684;&#x5934;&#x6587;&#x4EF6; */
<span class="token comment" spellcheck="true">#include &quot;something.h&quot;</span>

<span class="token comment" spellcheck="true">#define configUSE_PREEMPTION                    1</span>
<span class="token comment" spellcheck="true">#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0</span>
<span class="token comment" spellcheck="true">#define configUSE_TICKLESS_IDLE                 0</span>
<span class="token comment" spellcheck="true">#define configCPU_CLOCK_HZ                      60000000</span>
<span class="token comment" spellcheck="true">#define configTICK_RATE_HZ                      250</span>
<span class="token comment" spellcheck="true">#define configMAX_PRIORITIES                    5</span>
<span class="token comment" spellcheck="true">#define configMINIMAL_STACK_SIZE                128</span>
<span class="token comment" spellcheck="true">#define configMAX_TASK_NAME_LEN                 16</span>
<span class="token comment" spellcheck="true">#define configUSE_16_BIT_TICKS                  0</span>
<span class="token comment" spellcheck="true">#define configIDLE_SHOULD_YIELD                 1</span>
<span class="token comment" spellcheck="true">#define configUSE_TASK_NOTIFICATIONS            1</span>
<span class="token comment" spellcheck="true">#define configUSE_MUTEXES                       0</span>
<span class="token comment" spellcheck="true">#define configUSE_RECURSIVE_MUTEXES             0</span>
<span class="token comment" spellcheck="true">#define configUSE_COUNTING_SEMAPHORES           0</span>
<span class="token comment" spellcheck="true">#define configUSE_ALTERNATIVE_API               0 /* &#x8FC7;&#x65F6;&#x7684;! */</span>
<span class="token comment" spellcheck="true">#define configQUEUE_REGISTRY_SIZE               10</span>
<span class="token comment" spellcheck="true">#define configUSE_QUEUE_SETS                    0</span>
<span class="token comment" spellcheck="true">#define configUSE_TIME_SLICING                  0</span>
<span class="token comment" spellcheck="true">#define configUSE_NEWLIB_REENTRANT              0</span>
<span class="token comment" spellcheck="true">#define configENABLE_BACKWARD_COMPATIBILITY     0</span>
<span class="token comment" spellcheck="true">#define configNUM_THREAD_LOCAL_STORAGE_POINTERS 5</span>

/* &#x5185;&#x5B58;&#x5206;&#x914D;&#x76F8;&#x5173;&#x7684;&#x914D;&#x7F6E; */
<span class="token comment" spellcheck="true">#define configSUPPORT_STATIC_ALLOCATION         1</span>
<span class="token comment" spellcheck="true">#define configSUPPORT_DYNAMIC_ALLOCATION        1</span>
<span class="token comment" spellcheck="true">#define configTOTAL_HEAP_SIZE                   10240</span>
<span class="token comment" spellcheck="true">#define configAPPLICATION_ALLOCATED_HEAP        1</span>

/* &#x94A9;&#x5B50;&#x51FD;&#x6570;&#x76F8;&#x5173;&#x914D;&#x7F6E;*/
<span class="token comment" spellcheck="true">#define configUSE_IDLE_HOOK                     0</span>
<span class="token comment" spellcheck="true">#define configUSE_TICK_HOOK                     0</span>
<span class="token comment" spellcheck="true">#define configCHECK_FOR_STACK_OVERFLOW          0</span>
<span class="token comment" spellcheck="true">#define configUSE_MALLOC_FAILED_HOOK            0</span>
<span class="token comment" spellcheck="true">#define configUSE_DAEMON_TASK_STARTUP_HOOK      0</span>

/* &#x8FD0;&#x884C;&#x65F6;&#x4E0E;&#x4EFB;&#x52A1;&#x72B6;&#x6001;&#x91C7;&#x96C6;&#x76F8;&#x5173;&#x914D;&#x7F6E;*/
<span class="token comment" spellcheck="true">#define configGENERATE_RUN_TIME_STATS           0</span>
<span class="token comment" spellcheck="true">#define configUSE_TRACE_FACILITY                0</span>
<span class="token comment" spellcheck="true">#define configUSE_STATS_FORMATTING_FUNCTIONS    0</span>

/* &#x534F;&#x7A0B;*/
<span class="token comment" spellcheck="true">#define configUSE_CO_ROUTINES                   0</span>
<span class="token comment" spellcheck="true">#define configMAX_CO_ROUTINE_PRIORITIES         1</span>

/* &#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668; */
<span class="token comment" spellcheck="true">#define configUSE_TIMERS                        1</span>
<span class="token comment" spellcheck="true">#define configTIMER_TASK_PRIORITY               3</span>
<span class="token comment" spellcheck="true">#define configTIMER_QUEUE_LENGTH                10</span>
<span class="token comment" spellcheck="true">#define configTIMER_TASK_STACK_DEPTH            configMINIMAL_STACK_SIZE</span>

/* &#x4E2D;&#x65AD;&#x5D4C;&#x5957; */
<span class="token comment" spellcheck="true">#define configKERNEL_INTERRUPT_PRIORITY         [dependent of processor]</span>
<span class="token comment" spellcheck="true">#define configMAX_SYSCALL_INTERRUPT_PRIORITY    [dependent on processor and application]</span>
<span class="token comment" spellcheck="true">#define configMAX_API_CALL_INTERRUPT_PRIORITY   [dependent on processor and application]</span>

/* &#x7528;&#x4E8E;&#x5728;&#x5F00;&#x53D1;&#x5668;&#x4EF6;&#x6355;&#x83B7;&#x9519;&#x8BEF;&#x7684;&#x5B8F;*/
<span class="token comment" spellcheck="true">#define configASSERT( ( x ) ) if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )</span>

/* FreeRTOS MPU &#x5177;&#x4F53;&#x914D;&#x7F6E;. */
<span class="token comment" spellcheck="true">#define configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS 0</span>

/* &#x53EF;&#x9009;&#x529F;&#x80FD;*/
<span class="token comment" spellcheck="true">#define INCLUDE_vTaskPrioritySet                1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_uxTaskPriorityGet               1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_vTaskDelete                     1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_vTaskSuspend                    1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xResumeFromISR                  1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_vTaskDelayUntil                 1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_vTaskDelay                      1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTaskGetSchedulerState          1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTaskGetCurrentTaskHandle       1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_uxTaskGetStackHighWaterMark     0</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTaskGetIdleTaskHandle          0</span>
<span class="token comment" spellcheck="true">#define INCLUDE_eTaskGetState                   0</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xEventGroupSetBitFromISR        1</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTimerPendFunctionCall          0</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTaskAbortDelay                 0</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTaskGetHandle                  0</span>
<span class="token comment" spellcheck="true">#define INCLUDE_xTaskResumeFromISR              1</span>

/* &#x8FFD;&#x8E2A;&#x5B8F;&#x7684;&#x5B9A;&#x4E49;&#x5305;&#x542B;&#x53EF;&#x4EE5;&#x5728;&#x8FD9;&#x91CC;&#x5305;&#x542B; */

<span class="token comment" spellcheck="true">#endif /* FREERTOS_CONFIG_H */</span></code></pre>
<h1 id="config&#x53C2;&#x6570;"><code>config</code>&#x53C2;&#x6570;</h1><h2 id="configusepreemption">configUSE_PREEMPTION</h2><p>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x4F7F;&#x7528;&#x62A2;&#x5360;&#x5F0F;&#x8C03;&#x5EA6;(&#x5F3A;&#x5236;&#x5207;&#x6362;&#x5230;&#x9AD8;&#x4F18;&#x5148;&#x7EA7;&#x5C31;&#x7EEA;&#x4EFB;&#x52A1;);&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x4F7F;&#x7528;&#x5408;&#x4F5C;&#x5F0F;&#x8C03;&#x5EA6;(&#x4EFB;&#x52A1;&#x4E3B;&#x52A8;&#x4EA4;&#x51FA;CPU&#x4F7F;&#x7528;&#x6743;)&#x3002;</p><h2 id="configuseportoptimisedtaskselection">configUSE_PORT_OPTIMISED_TASK_SELECTION</h2><p>&#x4E00;&#x4E9B;freeRTOS&#x652F;&#x6301;&#x7684;&#x5904;&#x7406;&#x5668;&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4E24;&#x79CD;&#x65B9;&#x6CD5;&#x9009;&#x62E9;&#x4E0B;&#x4E00;&#x4E2A;&#x6267;&#x884C;&#x7684;&#x4EFB;&#x52A1;--&#x901A;&#x7528;&#x65B9;&#x6CD5;&#x548C;&#x7279;&#x6709;&#x65B9;&#x6CD5;&#x3002;</p><p><strong>&#x901A;&#x7528;&#x65B9;&#x6CD5;</strong></p><ul><li>&#x5F53;<code>configUSE_PORT_OPTIMISED_TASK_SELECTION</code>&#x8BBE;&#x7F6E;&#x4E3A;0&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6216;&#x8005;&#x7279;&#x6709;&#x65B9;&#x6CD5;&#x6CA1;&#x6709;&#x5B9E;&#x73B0;&#x7684;&#x65F6;&#x5019;
</li>
<li>&#x53EF;&#x4EE5;&#x5728;&#x6240;&#x6709;freeRTOS&#x652F;&#x6301;&#x7684;&#x5206;&#x652F;&#x4E0A;&#x4F7F;&#x7528;
</li>
<li>&#x5B8C;&#x5168;&#x4F7F;&#x7528;C&#x8BED;&#x8A00;&#x5B9E;&#x73B0;&#xFF0C;&#x56E0;&#x6B64;&#x5728;&#x6548;&#x7387;&#x4E0A;&#x6BD4;&#x7279;&#x6709;&#x65B9;&#x6CD5;&#x4F4E;
</li>
<li>&#x53EF;&#x7528;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x4E0A;&#x9650;&#x6CA1;&#x6709;&#x9650;&#x5236;
</li></ul>
<p><strong>&#x7279;&#x6709;&#x65B9;&#x6CD5;</strong></p><ul><li>&#x4E0D;&#x662F;&#x6240;&#x6709;&#x7684;&#x5904;&#x7406;&#x5668;&#x4E0A;&#x90FD;&#x53EF;&#x7528;
</li>
<li><code>configUSE_PORT_OPTIMISED_TASK_SELECTION</code>&#x8BBE;&#x7F6E;&#x4E3A;1
</li>
<li>&#x4F7F;&#x7528;&#x4E00;&#x6761;&#x6216;&#x591A;&#x6761;&#x7279;&#x5730;&#x7ED9;&#x6C47;&#x7F16;&#x6307;&#x4EE4;&#x5B9E;&#x73B0;
</li>
<li>&#x6BD4;&#x901A;&#x7528;&#x65B9;&#x6CD5;&#x9AD8;&#x6548;
</li>
<li>&#x901A;&#x5E38;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x6700;&#x5927;&#x6570;&#x91CF;&#x9650;&#x5236;&#x5728;32
</li></ul>
<h2 id="configuseticklessidle">configUSE_TICKLESS_IDLE</h2><p><code>configUSE_TICKLESS_IDLE</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#x4F7F;&#x7528;&#x4F4E;&#x529F;&#x8017;&#x4F4E;&#x8282;&#x62CD;&#x6A21;&#x5F0F;&#xFF0C;&#x6216;&#x8005;&#x8BBE;&#x7F6E;&#x4E3A;0&#x4F7F;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x79FB;&#x690D;&#x8FD0;&#x884C;&#x3002;&#x4F4E;&#x529F;&#x8017;&#x4F4E;&#x8282;&#x62CD;&#x7684;&#x5B9E;&#x73B0;&#x4E0D;&#x662F;&#x6240;&#x6709;&#x7684;&#x5904;&#x7406;&#x5668;&#x90FD;&#x652F;&#x6301;&#x3002;</p><h2 id="configuseidlehook">configUSE_IDLE_HOOK</h2><p>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x4F7F;&#x7528;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x7684;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x4E0D;&#x4F7F;&#x7528;&#x3002;</p><h2 id="configusemallocfailedhook">configUSE_MALLOC_FAILED_HOOK</h2><p>&#x5728;&#x521B;&#x5EFA;&#x4EFB;&#x52A1;&#x3001;&#x961F;&#x5217;&#x3001;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5185;&#x6838;&#x4F7F;&#x7528;<code>pvPortMalloc<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x4ECE;&#x5806;&#x4E0A;&#x5206;&#x914D;&#x5185;&#x5B58;&#x3002;&#x5B98;&#x65B9;&#x6E90;&#x7801;&#x4E2D;&#x63D0;&#x4F9B;&#x56DB;&#x4E2A;&#x5185;&#x5B58;&#x5206;&#x914D;&#x673A;&#x5236;&#x7684;&#x4F8B;&#x7A0B;&#x3002;&#x8FD9;&#x79CD;&#x673A;&#x5236;&#x5728;<code>heap_1.c, heap_2.c, heap_3.c, heap_4.c</code>&#x548C;<code>heap_5.c</code>&#x4E2D;&#x5206;&#x522B;&#x5B9E;&#x73B0;&#x3002;<code>configUSE_MALLOC_FAILED_HOOK</code>&#x4E4B;&#x4E0E;&#x4F7F;&#x7528;&#x8FD9;&#x51E0;&#x79CD;&#x5185;&#x5B58;&#x5206;&#x914D;&#x673A;&#x5236;&#x65F6;&#x6709;&#x5173;&#x3002;</p><p>&#x5982;&#x679C;&#x5B9A;&#x4E49;&#x5E76;&#x914D;&#x7F6E;&#x4E86;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5931;&#x8D25;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#xFF0C;freeRTOS&#x56E0;&#x4E3A;&#x5185;&#x5B58;&#x4E0D;&#x8DB3;&#xFF0C;&#x5728;&#x8C03;&#x7528;<code>pvPortMalloc<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x540E;&#x8FD4;&#x56DE;<code>NULL</code>&#xFF0C;&#x6B64;&#x65F6;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x5C06;&#x81EA;&#x52A8;&#x8C03;&#x7528;&#x3002;</p><p>&#x5982;&#x679C;&#x5C06;<code>configUSE_MALLOC_FAILED_HOOK</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#x4F7F;&#x7528;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5931;&#x8D25;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#xFF0C;&#x5219;&#x5FC5;&#x987B;&#x5B9E;&#x73B0;&#x8FD9;&#x4E2A;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x7684;&#x5B9A;&#x4E49;&#xFF1A;</p><p><code>void vApplicationMallocFailedHook<span class="token punctuation">(</span> void <span class="token punctuation">)</span><span class="token punctuation">;</span></code></p><h2 id="configusedaemontaskstartuphook">configUSE_DAEMON_TASK_STARTUP_HOOK</h2><p>&#x5982;&#x679C;<code>configUSE_TIMERS</code>&#x548C;<code>configUSE_DAEMON_TASK_STARTUP_HOOK</code>&#x540C;&#x65F6;&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x8FD9;&#x7528;&#x6237;&#x9700;&#x8981;&#x58F0;&#x660E;&#x5177;&#x6709;&#x5982;&#x4E0B;&#x5F62;&#x5F0F;&#x7684;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#xFF0C;&#x8FD9;&#x4E2A;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x4F1A;&#x5728;&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x670D;&#x52A1;&#x4EFB;&#x52A1;&#x7B2C;&#x4E00;&#x6B21;&#x6267;&#x884C;&#x65F6;&#x88AB;&#x8C03;&#x7528;&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x8FD9;&#x4E2A;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x53EF;&#x4EE5;&#x505A;&#x4E00;&#x4E9B;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7684;&#x521D;&#x59CB;&#x5316;&#x4EFB;&#x52A1;&#x3002;</p><p><code>void void vApplicationDaemonTaskStartupHook<span class="token punctuation">(</span> void <span class="token punctuation">)</span><span class="token punctuation">;</span></code></p><h2 id="configusetickhook">configUSE_TICK_HOOK</h2><p>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x4F7F;&#x7528;&#x8282;&#x62CD;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x5C06;&#x5FFD;&#x7565;&#x8282;&#x62CD;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x3002;&#x8282;&#x62CD;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x5728;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x4E2D;&#x8C03;&#x7528;&#xFF0C;&#x56E0;&#x6B64;&#x52A1;&#x5FC5;&#x77ED;&#x5C0F;&#x7CBE;&#x608D;&#x3002;</p><h2 id="configcpuclockhz">configCPU_CLOCK_HZ</h2><p>&#x7528;&#x4EE5;&#x4EA7;&#x751F;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x7684;&#x5185;&#x90E8;&#x65F6;&#x949F;&#x9891;&#x7387;&#xFF0C;&#x901A;&#x5E38;&#x4E0E;CPU&#x65F6;&#x949F;&#x9891;&#x7387;&#x76F8;&#x540C;&#x3002;&#x4E3A;&#x4E86;&#x6B63;&#x786E;&#x914D;&#x7F6E;&#x5B9A;&#x65F6;&#x5668;&#x5916;&#x8BBE;&#xFF0C;&#x8FD9;&#x4E2A;&#x503C;&#x662F;&#x5FC5;&#x9700;&#x8981;&#x7684;&#x3002;</p><h2 id="configtickratehz">configTICK_RATE_HZ</h2><p>RTOS&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x9891;&#x7387;&#x3002;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x7528;&#x4EE5;&#x6D4B;&#x91CF;&#x65F6;&#x95F4;&#xFF0C;&#x56E0;&#x6B64;&#x9891;&#x7387;&#x8D8A;&#x9AD8;&#xFF0C;&#x6D4B;&#x91CF;&#x7CBE;&#x5EA6;&#x8D8A;&#x9AD8;&#x3002;&#x4F46;&#x662F;&#xFF0C;&#x9AD8;&#x9891;&#x7387;&#x7684;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x4E5F;&#x610F;&#x5473;&#x7740;&#x5185;&#x6838;&#x5C06;&#x5360;&#x7528;&#x66F4;&#x591A;&#x7684;CPU&#x65F6;&#x95F4;&#xFF0C;&#x5BFC;&#x81F4;&#x6548;&#x7387;&#x964D;&#x4F4E;&#x3002;RTOS&#x4F7F;&#x7528;&#x7684;&#x4F8B;&#x7A0B;&#x4E2D;&#x7684;&#x8282;&#x62CD;&#x9891;&#x7387;&#x4E3A;1000Hz&#x3002;&#x8FD9;&#x4E2A;&#x9891;&#x7387;&#x7528;&#x6765;&#x6D4B;&#x8BD5;&#x5185;&#x6838;&#xFF0C;&#x901A;&#x5E38;&#x6BD4;&#x9700;&#x8981;&#x7684;&#x9AD8;&#x3002;</p><p>&#x591A;&#x4E2A;&#x4EFB;&#x52A1;&#x53EF;&#x4EE5;&#x5171;&#x4EAB;&#x540C;&#x4E00;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;RTOS&#x8C03;&#x5EA6;&#x5668;&#x5C06;&#x5728;&#x6BCF;&#x4E2A;&#x8282;&#x62CD;&#x65F6;&#x8FDB;&#x884C;&#x4EFB;&#x52A1;&#x5207;&#x6362;&#xFF0C;&#x9AD8;&#x9891;&#x7387;&#x7684;&#x8282;&#x62CD;&#x56E0;&#x6B64;&#x4F1A;&#x51CF;&#x5C11;&#x6BCF;&#x4E2A;&#x4EFB;&#x52A1;&#x7684;&#x65F6;&#x95F4;&#x7247;&#x3002;</p><h2 id="configmaxpriorities">configMAX_PRIORITIES</h2><p>&#x7528;&#x6765;&#x914D;&#x7F6E;&#x4EFB;&#x52A1;&#x53EF;&#x7528;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x6700;&#x5927;&#x6570;&#x91CF;&#xFF0C;&#x591A;&#x4E2A;&#x4EFB;&#x52A1;&#x53EF;&#x4EE5;&#x5171;&#x7528;&#x4E00;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#x3002;&#x534F;&#x7A0B;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x4E0E;&#x4EFB;&#x52A1;&#x65F6;&#x5206;&#x5F00;&#x7684;&#xFF0C;&#x4F7F;&#x7528;<code>configMAX_CO_ROUTINE_PRIORITIES</code>&#x914D;&#x7F6E;&#x6700;&#x5927;&#x534F;&#x7A0B;&#x53EF;&#x7528;&#x4F18;&#x5148;&#x7EA7;&#x6570;&#x91CF;&#x3002;</p><p><strong>&#x5728;&#x5185;&#x6838;&#x4E2D;&#xFF0C;&#x6BCF;&#x4E2A;&#x53EF;&#x7528;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x6570;&#x91CF;&#x90FD;&#x4F1A;&#x6D88;&#x8017;RAM&#xFF0C;&#x5373;&#x4F7F;&#x8FD9;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#x662F;&#x6CA1;&#x6709;&#x4F7F;&#x7528;&#x7684;&#x3002;&#x56E0;&#x6B64;&#x5F3A;&#x70C8;&#x5EFA;&#x8BAE;&#xFF0C;&#x5728;&#x5B9E;&#x9645;&#x5E94;&#x7528;&#x4E2D;&#xFF0C;&#x8FD9;&#x4E2A;&#x6700;&#x5927;&#x4F18;&#x5148;&#x7EA7;&#x6570;&#x91CF;&#x5E94;&#x8BE5;&#x4E0E;&#x5B9E;&#x9645;&#x4EFB;&#x52A1;&#x6570;&#x91CF;&#x76F8;&#x540C;</strong></p><h2 id="configminimalstacksize">configMINIMAL_STACK_SIZE</h2><p>&#x914D;&#x7F6E;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x4F7F;&#x7528;&#x7684;&#x5360;&#x7A7A;&#x95F4;&#x5927;&#x5C0F;&#x3002;&#x4E0E;<code>xTaskCreat<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x548C;<code>xTaskCreatStatic<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x7C7B;&#x4F3C;&#xFF0C;&#x6808;&#x7A7A;&#x95F4;&#x7684;&#x5927;&#x5C0F;&#x4EE5;&#x5B57;(<code>word</code>)&#x4E3A;&#x5355;&#x4F4D;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x5B57;&#x8282;(<code>byte</code>)&#xFF0C;&#x5982;&#x679C;&#x6808;&#x5185;&#x6210;&#x5458;&#x653E;&#x7F6E;&#x5728;32-bit&#x7684;&#x6808;&#x4E2D;&#xFF0C;&#x6808;&#x5927;&#x5C0F;100&#x610F;&#x5473;&#x7740;400&#x5B57;&#x8282;&#x3002;</p><h2 id="configmaxtasknamelen">configMAX_TASK_NAME_LEN</h2><p>&#x4EFB;&#x52A1;&#x540D;&#x79F0;&#x7684;&#x6700;&#x5927;&#x957F;&#x5EA6;&#xFF0C;&#x5305;&#x62EC;&#x6700;&#x540E;&#x9762;&#x7684;&#x7EC8;&#x6B62;&#x5B57;&#x7B26;&#xFF0C;&#x8D85;&#x51FA;&#x90E8;&#x5206;&#x4F1A;&#x88AB;&#x622A;&#x65AD;&#x3002;</p><h2 id="configusetracefacility">configUSE_TRACE_FACILITY</h2><p>&#x5982;&#x679C;&#x4F60;&#x5E0C;&#x671B;&#x5305;&#x62EC;&#x5176;&#x4ED6;&#x7ED3;&#x6784;&#x6210;&#x5458;&#x548C;&#x529F;&#x80FD;&#xFF0C;&#x4EE5;&#x534F;&#x52A9;&#x6267;&#x884C;&#x53EF;&#x89C6;&#x5316;&#x548C;&#x8DDF;&#x8E2A;&#x8BBE;&#x7F6E;&#x4E3A;1&#x3002;</p><h2 id="configusestatsformattingfunctions">configUSE_STATS_FORMATTING_FUNCTIONS</h2><p>&#x5C06;<code>configUSE_TRACE_FACILITY</code>&#x548C;<code>configUSE_STATS_FORMATTING_FUNCTIONS</code>&#x540C;&#x65F6;&#x8BBE;&#x7F6E;&#x4E3A;1&#x5C06;&#x5305;&#x542B;<code>vTaskList<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x548C;<code>vTaskGetRunTimeStats<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x51FD;&#x6570;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x5728;&#x7F16;&#x8BD1;&#x7684;&#x65F6;&#x5019;&#x5C06;&#x5FFD;&#x7565;&#x8FD9;&#x4E24;&#x4E2A;&#x51FD;&#x6570;&#x3002;</p><h2 id="configuse16bitticks">configUSE_16_BIT_TICKS</h2><p>&#x65F6;&#x95F4;&#x5728;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x4E2D;&#x6D4B;&#x91CF;--&#x4EE3;&#x8868;&#x4ECE;&#x5185;&#x6838;&#x5F00;&#x59CB;&#x5230;&#x6BCF;&#x4E2A;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x7684;&#x65F6;&#x95F4;&#x95F4;&#x9694;&#x3002;&#x8282;&#x62CD;&#x8BA1;&#x6570;&#x503C;&#x901A;&#x5E38;&#x4FDD;&#x5B58;&#x5728;<code>TickType_t</code>&#x7C7B;&#x578B;&#x7684;&#x53D8;&#x91CF;&#x4E2D;&#x3002;</p><p><code>configUSE_16_BIT_TICKS</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5C06;&#x628A;<code>TickType_t</code>&#x5B9A;&#x4E49;&#x4E3A;&#x65E0;&#x7B26;&#x53F7;&#x7684;16&#x4F4D;&#x7C7B;&#x578B;&#x3002;&#x5C06;<code>configUSE_16_BIT_TICKS</code>&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x628A;<code>TickType_t</code>&#x5B9A;&#x4E49;&#x4E3A;&#x65E0;&#x7B26;&#x53F7;&#x7684;32&#x4F4D;&#x7C7B;&#x578B;</p><p>&#x4F7F;&#x7528;16&#x4F4D;&#x7C7B;&#x578B;&#x53EF;&#x4EE5;&#x6539;&#x5584;&#x5728;8&#x4F4D;&#x548C;16&#x4F4D;&#x67B6;&#x6784;&#x4E0A;&#x7684;&#x8868;&#x73B0;&#xFF0C;&#x4F46;&#x662F;&#x6700;&#x5927;&#x53EF;&#x4EE5;&#x8BA1;&#x7684;&#x8282;&#x62CD;&#x6570;&#x4F4D;65535&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x5047;&#x8BBE;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x7684;&#x9891;&#x7387;&#x4F4D;250Hz&#xFF0C;&#x6700;&#x5927;&#x7684;&#x5EF6;&#x65F6;&#x6216;&#x8005;&#x7EC4;&#x9102;&#x585E;&#x65F6;&#x95F4;&#x662F;262&#x79D2;&#x3002;</p><h2 id="configidleshouldyield">configIDLE_SHOULD_YIELD</h2><p>&#x8FD9;&#x4E2A;&#x53C2;&#x6570;&#x63A7;&#x5236;&#x5904;&#x5728;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x4EFB;&#x52A1;&#x884C;&#x4E3A;&#x3002;&#x53EA;&#x5728;&#x4E0B;&#x5217;&#x6761;&#x4EF6;&#x4E0B;&#x6709;&#x6548;&#xFF1A;</p><ul><li>&#x4F7F;&#x7528;&#x62A2;&#x5360;&#x5F0F;&#x8C03;&#x5EA6;&#x5668;
</li>
<li>&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x521B;&#x5EFA;&#x7684;&#x4EFB;&#x52A1;&#x5728;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x4E0A;&#x8FD0;&#x884C;
</li></ul>
<p>&#x5982;&#x679C;<code>configUSE_TIME_SLICING</code>&#x8BBE;&#x7F6E;&#x4E3A;1(&#x6216;&#x8005;&#x672A;&#x5B9A;&#x4E49;&#xFF0C;&#x4F7F;&#x7528;&#x5185;&#x6838;&#x9ED8;&#x8BA4;&#x503C;)&#xFF0C;&#x62E5;&#x6709;&#x540C;&#x4E00;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x4EFB;&#x52A1;&#x5C06;&#x5171;&#x4EAB;&#x65F6;&#x95F4;&#x7247;&#x3002;&#x5982;&#x679C;&#x6CA1;&#x6709;&#x4EFB;&#x52A1;&#x88AB;&#x62A2;&#x5360;&#xFF0C;&#x90A3;&#x4E48;&#x53EF;&#x4EE5;&#x8BA4;&#x4E3A;&#x6BCF;&#x4E2A;&#x4EFB;&#x52A1;&#x62E5;&#x6709;&#x7B49;&#x91CF;&#x7684;&#x65F6;&#x95F4;&#x7247;--&#x4F18;&#x5148;&#x7EA7;&#x5728;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x4E4B;&#x4E0A;&#xFF0C;&#x60C5;&#x51B5;&#x4E5F;&#x7684;&#x786E;&#x5982;&#x6B64;&#x3002;</p><p>&#x5F53;&#x4EFB;&#x52A1;&#x4E0E;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x5171;&#x4EAB;&#x4F18;&#x5148;&#x7EA7;&#x65F6;&#xFF0C;&#x884C;&#x4E3A;&#x4E0A;&#x4F1A;&#x6709;&#x4E9B;&#x4E0D;&#x540C;&#x3002;&#x5982;&#x679C;<code>configIDLE_SHOULD_YIELD</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x90A3;&#x4E48;&#x5F53;&#x5904;&#x5728;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x4EFB;&#x52A1;&#x5C31;&#x7EEA;&#x65F6;&#xFF0C;&#x4F1A;&#x7ACB;&#x5373;&#x62A2;&#x5360;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x800C;&#x5F97;&#x5230;&#x6267;&#x884C;&#x3002;&#x8FD9;&#x662F;&#x4E3A;&#x4E86;&#x786E;&#x4FDD;&#x5F53;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5C31;&#x7EEA;&#x65F6;&#xFF0C;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x6240;&#x5360;&#x7528;&#x7684;&#x65F6;&#x95F4;&#x6253;&#x5230;&#x6700;&#x5C0F;&#x3002;&#x8FD9;&#x79CD;&#x884C;&#x4E3A;&#x6709;&#x65F6;&#x4F1A;&#x4EA7;&#x751F;&#x610F;&#x60F3;&#x4E0D;&#x5230;&#x7684;&#x6548;&#x679C;(&#x53D6;&#x51B3;&#x4E8E;&#x4F60;&#x7684;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;)&#xFF0C;&#x5982;&#x4E0B;&#x56FE;&#x6240;&#x793A;:</p><p><img src="http://www.freertos.org/idleyield.gif"></p><p>&#x56FE;&#x4E0A;A&#x3001;B&#x3001;C&#x65F6;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4EFB;&#x52A1;&#xFF0C;I&#x662F;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#xFF0C;T0...T6&#x662F;&#x4EFB;&#x52A1;&#x5207;&#x6362;&#x7684;&#x65F6;&#x523B;&#xFF0C;&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#xFF0C;&#x5728;T2&#x65F6;&#x523B;&#xFF0C;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x56E0;&#x4E3A;A&#x4EFB;&#x52A1;&#x5C31;&#x7EEA;&#x800C;&#x88AB;&#x5207;&#x6362;&#x5230;A&#x4EFB;&#x52A1;&#x4E2D;&#x6267;&#x884C;&#xFF0C;&#x5BFC;&#x81F4;A&#x4EFB;&#x52A1;&#x4E0E;&#x5176;&#x5B83;&#x4EFB;&#x52A1;&#x76F8;&#x6BD4;&#x83B7;&#x5F97;&#x7684;&#x65F6;&#x95F4;&#x7247;&#x8981;&#x5C11;&#x3002;</p><p>&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4EE5;&#x4E0B;&#x65B9;&#x5F0F;&#x907F;&#x514D;&#x4E0A;&#x8FF0;&#x73B0;&#x8C61;&#xFF1A;</p><ul><li>&#x5982;&#x679C;&#x53EF;&#x4EE5;&#xFF0C;&#x4F7F;&#x7528;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x7684;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x66FF;&#x4EE3;&#x521B;&#x5EFA;&#x4E0E;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x76F8;&#x540C;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x4EFB;&#x52A1;
</li>
<li>&#x6240;&#x6709;&#x4EFB;&#x52A1;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x90FD;&#x6BD4;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x9AD8;
</li>
<li>&#x8BBE;&#x7F6E;<code>configIDLE_SHOULD_YIELD</code>&#x4E3A;0&#xFF0C;&#x76F4;&#x5230;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x4E3B;&#x52A8;&#x4EA4;&#x51FA;CPU&#x4F7F;&#x7528;&#x6743;&#xFF0C;&#x518D;&#x53BB;&#x6267;&#x884C;&#x5176;&#x5B83;&#x4EFB;&#x52A1;&#xFF0C;&#x4F46;&#x662F;&#x4F1A;&#x5BFC;&#x81F4;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x5206;&#x914D;&#x7684;&#x65F6;&#x95F4;&#x6BD4;&#x4F8B;&#x589E;&#x5927;
</li></ul>
<h2 id="configusetasknotifications">configUSE_TASK_NOTIFICATIONS</h2><p>&#x5982;&#x679C;&#x4F7F;&#x7528;&#x4EFB;&#x52A1;&#x901A;&#x77E5;&#xFF0C;&#x9700;&#x8981;&#x5C06;&#x8FD9;&#x4E2A;&#x914D;&#x7F6E;&#x9879;&#x8BBE;&#x4E3A;1&#x3002;</p><h2 id="configusemutexes">configUSE_MUTEXES</h2><p>&#x5982;&#x679C;&#x4F7F;&#x7528;&#x4E92;&#x65A5;&#x91CF;&#xFF0C;&#x5C06;&#x6B64;&#x914D;&#x7F6E;&#x9879;&#x8BBE;&#x4E3A;1&#x3002;</p><h2 id="configuserecursivemutexes">configUSE_RECURSIVE_MUTEXES</h2><p>&#x5982;&#x679C;&#x4F7F;&#x7528;&#x9012;&#x5F52;&#x4E92;&#x65A5;&#x91CF;&#xFF0C;&#x8BBE;&#x4E3A;1 &#x3002;</p><h2 id="configusecountingsemaphores">configUSE_COUNTING_SEMAPHORES</h2><p>&#x5982;&#x679C;&#x4F7F;&#x7528;&#x8BA1;&#x6570;&#x4FE1;&#x53F7;&#x91CF;&#xFF0C;&#x8BBE;&#x4E3A;1 &#x3002;</p><h2 id="configusealternativeapi">configUSE_ALTERNATIVE_API</h2><p>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x4F7F;&#x7528;&#x961F;&#x5217;&#x7684;&#x53E6;&#x4E00;&#x7EC4;API&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x7EC4;API&#x5DF2;&#x7ECF;&#x4E0D;&#x518D;&#x4F7F;&#x7528;&#xFF0C;&#x5EFA;&#x8BAE;&#x4E0D;&#x8981;&#x5728;&#x65B0;&#x8BBE;&#x8BA1;&#x4E2D;&#x4F7F;&#x7528;&#x3002;</p><h2 id="configcheckforstackoverflow">configCHECK_FOR_STACK_OVERFLOW</h2><p>&#x5982;&#x679C;&#x8BBE;&#x7F6E;&#x4E3A;&#x975E;0&#x503C;&#xFF0C;&#x5728;&#x6808;&#x6EA2;&#x51FA;&#x7684;&#x65F6;&#x5019;&#x8C03;&#x7528;&#x6808;&#x6EA2;&#x51FA;&#x94A9;&#x5B50;&#x51FD;&#x6570;&#x3002;</p><h2 id="configqueueregistrysize">configQUEUE_REGISTRY_SIZE</h2><p>&#x961F;&#x5217;&#x6CE8;&#x518C;&#x8868;&#x6709;&#x4E24;&#x4E2A;&#x76EE;&#x7684;&#xFF0C;&#x90FD;&#x4E0E;RTOS&#x7684;&#x5185;&#x6838;&#x8C03;&#x8BD5;&#x6709;&#x5173;&#x3002;</p><ul><li>&#x4E3A;&#x961F;&#x5217;&#x63D0;&#x4F9B;&#x4E00;&#x4E2A;&#x6587;&#x672C;&#x540D;&#x79F0;&#x7528;&#x5728;&#x8C03;&#x8BD5;&#x754C;&#x9762;&#x4E2D;&#x533A;&#x5206;&#x961F;&#x5217;
</li>
<li>&#x5305;&#x542B;&#x7528;&#x4E8E;&#x5B9A;&#x4F4D;&#x961F;&#x5217;&#x548C;&#x4FE1;&#x53F7;&#x91CF;&#x7684;&#x8C03;&#x8BD5;&#x4FE1;&#x606F;
</li></ul>
<p>&#x961F;&#x5217;&#x6CE8;&#x518C;&#x8868;&#x53EA;&#x5728;&#x4F60;&#x4F7F;&#x7528;&#x5185;&#x6838;&#x8C03;&#x8BD5;&#x7684;&#x65F6;&#x5019;&#x6709;&#x7528;&#x3002;</p><p><code>configQUEUE_REGISTRY_SIZE</code>&#x5B9A;&#x4E49;&#x961F;&#x5217;&#x548C;&#x4FE1;&#x53F7;&#x91CF;&#x53EF;&#x4EE5;&#x88AB;&#x6CE8;&#x518C;&#x7684;&#x6700;&#x5927;&#x6570;&#x91CF;&#xFF0C;&#x53EF;&#x4EE5;&#x901A;&#x8FC7; vQueueAddToRegistry()<code>&#x548C;</code>vQueueUnregisterQueue()`&#x83B7;&#x5F97;&#x66F4;&#x591A;&#x76F8;&#x5173;&#x4FE1;&#x606F;&#x3002;</p><h2 id="configusequeuesets">configUSE_QUEUE_SETS</h2><p>&#x8BBE;&#x7F6E;&#x4E3A; 1 &#x5C06;&#x5305;&#x542B;&#x961F;&#x5217;&#x96C6;( queue set )&#x529F;&#x80FD;(&#x53EF;&#x4EE5;&#x963B;&#x585E;&#x6216;&#x6302;&#x8D77;&#x5728;&#x591A;&#x4E2A;&#x961F;&#x5217;&#x548C;&#x4FE1;&#x53F7;&#x91CF;&#x4E0A;)&#x3002;&#x8BE6;&#x7EC6;&#x7EC6;&#x8282;&#x53EF;&#x4EE5;&#x53C2;&#x8003;&quot;&#x5728;&#x591A;&#x4E2A;RTOS&#x5BF9;&#x8C61;&#x4E0A;&#x963B;&#x585E;&quot;&#x7AE0;&#x8282;&#x3002;</p><h2 id="configusetimeslicing">configUSE_TIME_SLICING</h2><p>&#x9ED8;&#x8BA4;&#x60C5;&#x51B5;&#x4E0B;( configUSE_TIME_SLICING &#x672A;&#x5B9A;&#x4E49;&#x6216;&#x8005;&#x8BBE;&#x7F6E;&#x4E3A;1 )&#xFF0C;freeRTOS&#x5C06;&#x4F7F;&#x7528;&#x65F6;&#x95F4;&#x7247;&#x7684;&#x6765;&#x8FDB;&#x884C;&#x57FA;&#x4E8E;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x62A2;&#x5360;&#x5F0F;&#x8C03;&#x5EA6;&#x3002;&#x8FD9;&#x610F;&#x5473;&#x8FD9;RTOS&#x7684;&#x8C03;&#x5EA6;&#x5668;&#x5C06;&#x4E00;&#x76F4;&#x6267;&#x884C;&#x7684;&#x662F;&#x62E5;&#x6709;&#x6700;&#x9AD8;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x5C31;&#x7EEA;&#x4EFB;&#x52A1;&#xFF0C;&#x5E76;&#x4E14;&#x5C06;&#x5728;&#x6BCF;&#x4E2A;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x4E2D;&#x5BF9;&#x4F18;&#x5148;&#x7EA7;&#x76F8;&#x540C;&#x7684;&#x4EFB;&#x52A1;&#x8FDB;&#x884C;&#x5207;&#x6362;&#x3002;&#x5982;&#x679C;&#x8FD9;&#x4E2A;&#x8BBE;&#x7F6E;&#x9879;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x5219;&#x4E0D;&#x4F1A;&#x4F7F;&#x7528;&#x65F6;&#x95F4;&#x7247;&#xFF0C;&#x5373;&#x4E0D;&#x4F1A;&#x5728;&#x8282;&#x62CD;&#x4E2D;&#x65AD;&#x4E2D;&#x5207;&#x6362;&#x540C;&#x7B49;&#x4F18;&#x5148;&#x7EA7;&#x7684;&#x4EFB;&#x52A1;&#x3002;</p><h2 id="configusenewlibreentrant">configUSE_NEWLIB_REENTRANT</h2><p>If configUSE_NEWLIB_REENTRANT is set to 1 then a newlib reent structure will be allocated for each created task. Note Newlib support has been included by popular demand, but is not used by the FreeRTOS maintainers themselves. FreeRTOS is not responsible for resulting newlib operation. User must be familiar with newlib and must provide system-wide implementations of the necessary stubs. Be warned that (at the time of writing) the current newlib design implements a system-wide malloc() that must be provided with locks.</p><h2 id="configenablebackwardcompatibility">configENABLE_BACKWARD_COMPATIBILITY</h2><p>The FreeRTOS.h header file includes a set of #define macros that map the names of data types used in versions of FreeRTOS prior to version 8.0.0 to the names used in FreeRTOS version 8.0.0. The macros allow application code to update the version of FreeRTOS they are built against from a pre 8.0.0 version to a post 8.0.0 version without modification. Setting configENABLE_BACKWARD_COMPATIBILITY to 0 in FreeRTOSConfig.h excludes the macors from the build, and in so doing allowing validation that no pre version 8.0.0 names are being used.</p><h2 id="confignumthreadlocalstoragepointers">configNUM_THREAD_LOCAL_STORAGE_POINTERS</h2><p>&#x8BBE;&#x7F6E;&#x4EFB;&#x52A1;&#x7684;&#x7EBF;&#x7A0B;&#x672C;&#x5730;&#x5B58;&#x50A8;&#x6570;&#x7EC4;(thread local storage array)&#x7684;&#x7D22;&#x5F15;&#x53F7;</p><h2 id="configsupportstaticallocation">configSUPPORT_STATIC_ALLOCATION</h2><p><code>configSUPPORT_STATIC_ALLOCATION</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5219;RTOS&#x5BF9;&#x8C61;&#x4F7F;&#x7528;&#x7684;RAM&#x7531;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7F16;&#x5199;&#x8005;&#x63D0;&#x4F9B;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x5219;&#x7531;freeRTOS&#x4ECE;&#x5806;&#x4E0A;&#x5206;&#x914D;&#x3002;&#x8BE5;&#x914D;&#x7F6E;&#x9009;&#x9879;&#x9ED8;&#x8BA4;&#x4E3A;0&#x3002;</p><p>&#x5982;&#x679C;<code>configSUPPORT_STATIC_ALLOCATION</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7F16;&#x5199;&#x8005;&#x9700;&#x8981;&#x989D;&#x5916;&#x63D0;&#x4F9B;&#x4E24;&#x4E2A;&#x56DE;&#x8C03;&#x51FD;&#x6570;&#xFF1A;<code>vApplicationGetIdleTaskMemory<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x7ED9;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x63D0;&#x4F9B;&#x5185;&#x5B58;&#xFF0C;<code>vApplicationGetTimerTaskMemory<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x7ED9;&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x670D;&#x52A1;&#x4EFB;&#x52A1;&#x63D0;&#x4F9B;&#x5185;&#x5B58;&#xFF0C;&#x5982;&#x4E0B;&#x4F8B;&#xFF1A;</p><pre><code>/* vApplicationGetIdleTaskMemory<span class="token punctuation">(</span><span class="token punctuation">)</span> &#x7ED9;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x63D0;&#x4F9B;&#x5185;&#x5B58; */
void vApplicationGetIdleTaskMemory<span class="token punctuation">(</span> StaticTask_t **ppxIdleTaskTCBBuffer,
                                    StackType_t **ppxIdleTaskStackBuffer,
                                    uint32_t *pulIdleTaskStackSize <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
/* &#x4EE5;&#x6570;&#x7EC4;&#x5185;&#x5B58;&#x5206;&#x914D;&#x7684;&#x65B9;&#x5F0F;&#x5206;&#x914D;&#x5185;&#x5B58;&#x7ED9;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#xFF0C;&#x6CE8;&#x610F;&#xFF0C;&#x6B64;&#x5904;&#x9700;&#x8981;&#x4E3A;static*&#xFF0C;&#x5426;&#x5219;&#x662F;&#x5728;&#x6808;&#x4E0A;&#x7533;&#x8BF7;&#x7684;&#x5185;&#x5B58;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x4E4B;&#x5916;&#x65E0;&#x6CD5;&#x7EE7;&#x7EED;&#x4F7F;&#x7528;&#x3002;*/
static StaticTask_t xIdleTaskTCB<span class="token punctuation">;</span>
static StackType_t uxIdleTaskStack<span class="token punctuation">[</span> configMINIMAL_STACK_SIZE <span class="token punctuation">]</span><span class="token punctuation">;</span>

    /* &#x4F20;&#x9012;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x7684;TCB&#x6307;&#x9488;&#x5230;StaticTask_t&#x7ED3;&#x6784;&#x7684;&#x7F13;&#x5B58;&#x6307;&#x9488;*/
    *ppxIdleTaskTCBBuffer <span class="token operator">=</span> <span class="token operator">&amp;</span>xIdleTaskTCB<span class="token punctuation">;</span>

    /* &#x5C06;&#x7533;&#x8BF7;&#x7684;&#x5185;&#x5B58;&#x4F20;&#x7ED9;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#xFF0C;&#x7528;&#x4F5C;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x5806;&#x6808; */
    *ppxIdleTaskStackBuffer <span class="token operator">=</span> uxIdleTaskStack<span class="token punctuation">;</span>

    /* &#x4F20;&#x9012;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x7684;&#x6808;&#x5927;&#x5C0F;&#xFF0C;&#x6CE8;&#x610F;&#x662F;&#x4EE5;&#x5B57;<span class="token punctuation">(</span>word<span class="token punctuation">)</span>&#x4E3A;&#x5355;&#x4F4D; */
    *pulIdleTaskStackSize <span class="token operator">=</span> configMINIMAL_STACK_SIZE<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
/*-----------------------------------------------------------*/

/* vApplicationGetTimerTaskMemory<span class="token punctuation">(</span><span class="token punctuation">)</span>
&#x63D0;&#x4F9B;&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x7684;&#x6808;&#x5185;&#x5B58; */
void vApplicationGetTimerTaskMemory<span class="token punctuation">(</span> StaticTask_t **ppxTimerTaskTCBBuffer,
                                     StackType_t **ppxTimerTaskStackBuffer,
                                     uint32_t *pulTimerTaskStackSize <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
/* &#x9053;&#x7406;&#x548C;&#x7A7A;&#x95F2;&#x4EFB;&#x52A1;&#x5185;&#x5B58;&#x5206;&#x914D;&#x76F8;&#x540C;&#xFF0C;&#x9700;&#x8981;&#x4F7F;&#x7528;static&#x65B9;&#x5F0F;&#x7533;&#x660E; */
static StaticTask_t xTimerTaskTCB<span class="token punctuation">;</span>
static StackType_t uxTimerTaskStack<span class="token punctuation">[</span> configTIMER_TASK_STACK_DEPTH <span class="token punctuation">]</span><span class="token punctuation">;</span>

    /* &#x4F20;&#x9012;&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x4EFB;&#x52A1;TCB&#x6307;&#x9488; */
    *ppxTimerTaskTCBBuffer <span class="token operator">=</span> <span class="token operator">&amp;</span>xTimerTaskTCB<span class="token punctuation">;</span>

    /* &#x6808;&#x7A7A;&#x95F4; */
    *ppxTimerTaskStackBuffer <span class="token operator">=</span> uxTimerTaskStack<span class="token punctuation">;</span>

    /* &#x4EE5;&#x5B57;<span class="token punctuation">(</span>word<span class="token punctuation">)</span>&#x4E3A;&#x5355;&#x4F4D;&#x7684;&#x6808;&#x5927;&#x5C0F; */
    *pulTimerTaskStackSize <span class="token operator">=</span> configTIMER_TASK_STACK_DEPTH<span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<h2 id="configsupportdynamicallocation">configSUPPORT_DYNAMIC_ALLOCATION</h2><p><code>configSUPPORT_DYNAMIC_ALLOCATION</code>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5219;&#x5185;&#x5B58;&#x5206;&#x914D;&#x5728;freeRTOS&#x7BA1;&#x7406;&#x7684;&#x5806;(heap)&#x4E0A;&#x5206;&#x914D;&#xFF0C;&#x5982;&#x679C;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x5219;&#x5185;&#x5B58;&#x5206;&#x914D;&#x7531;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7F16;&#x5199;&#x8005;&#x63D0;&#x4F9B;&#x3002;&#x9ED8;&#x8BA4;&#x4E3A;1.</p><p>&#x53C2;&#x8003;&#x201C;&#x9759;&#x6001;&#x5206;&#x914D;&#x4E0E;&#x52A8;&#x6001;&#x5206;&#x914D;&#x201D;&#x3002;</p><h2 id="configtotalheapsize">configTOTAL_HEAP_SIZE</h2><p>freeRTOS&#x7684;&#x53EF;&#x7528;&#x5806;&#x5185;&#x5B58;&#x5927;&#x5C0F;&#x3002;</p><p>&#x8FD9;&#x4E2A;&#x503C;&#x53EA;&#x5728;&#x4F7F;&#x7528;&#x52A8;&#x6001;&#x5185;&#x5B58;&#x5206;&#x914D;&#x65F6;&#x6709;&#x6548;&#xFF0C;&#x5E76;&#x4E14;&#x5206;&#x914D;&#x673A;&#x5236;&#x7531;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x9009;&#x62E9;&#x7684;&#x5185;&#x5B58;&#x5206;&#x914D;&#x673A;&#x5236;&#x786E;&#x5B9A;&#xFF0C;&#x8BE6;&#x7EC6;&#x53EF;&#x4EE5;&#x53C2;&#x8003;&quot;&#x5185;&#x5B58;&#x914D;&#x7F6E;&quot;&#x90E8;&#x5206;&#x3002;</p><h2 id="configapplicationallocatedheap">configAPPLICATION_ALLOCATED_HEAP</h2><p>&#x9ED8;&#x8BA4;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;freeRTOS&#x7684;&#x5806;&#x5185;&#x5B58;&#x7531;freeRTOS&#x7533;&#x660E;&#xFF0C;&#x5E76;&#x4E14;&#x7531;&#x94FE;&#x63A5;&#x5668;&#x653E;&#x7F6E;&#x5728;&#x5177;&#x4F53;&#x7684;&#x5185;&#x5B58;&#x4E0B;&#xFF0C;&#x5982;&#x679C;&#x8BBE;&#x7F6E;<code>configAPPLICATION_ALLOCATED_HEAP</code>&#x4E3A;1&#xFF0C;&#x5219;&#x5141;&#x8BB8;&#x5806;&#x5185;&#x5B58;&#x7531;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7F16;&#x5199;&#x8005;&#x81EA;&#x5DF1;&#x63D0;&#x4F9B;&#xFF0C;&#x5185;&#x5B58;&#x4F4D;&#x7F6E;&#x53EF;&#x4EE5;&#x4E3A;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#x4EFB;&#x610F;&#x4F4D;&#x7F6E;&#x3002;</p><p>&#x5982;&#x679C;&#x4F7F;&#x7528;<code>heap_1.c</code>&#x3001;<code>heap_2.c</code>&#x6216;<code>heap_4.c</code>&#xFF0C;&#x5E76;&#x4E14;&#x8BE5;&#x8BBE;&#x7F6E;&#x9879;&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5219;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x7F16;&#x5199;&#x8005;&#x5FC5;&#x987B;&#x63D0;&#x4F9B;&#x7C7B;&#x578B;&#x4E3A;<code>uint8_t</code>&#x7684;&#x6570;&#x7EC4;&#x4F5C;&#x4E3A;&#x5806;&#x5185;&#x5B58;&#xFF0C;&#x8FD9;&#x4E2A;&#x6570;&#x7EC4;&#x5728;&#x5185;&#x5B58;&#x4E2D;&#x7684;&#x4F4D;&#x7F6E;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x7EDD;&#x5BF9;&#x5B9A;&#x4F4D;&#x3002;</p><p><code>uint8_t ucHeap<span class="token punctuation">[</span> configTOTAL_HEAP_SIZE <span class="token punctuation">]</span></code></p><h2 id="configgenerateruntimestats">configGENERATE_RUN_TIME_STATS</h2><p>&#x63D0;&#x4F9B;&#x8FD0;&#x884C;&#x65F6;&#x95F4;&#x7EDF;&#x8BA1;&#x529F;&#x80FD;&#xFF0C;&#x8BE6;&#x7EC6;&#x53EF;&#x4EE5;&#x53C2;&#x8003;&quot;&#x8FD0;&#x884C;&#x65F6;&#x95F4;&#x7EDF;&#x8BA1;&quot;&#x3002;</p><h2 id="configusecoroutines">configUSE_CO_ROUTINES</h2><p>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x4F7F;&#x7528;&#x534F;&#x7A0B;(co-routine)&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;0&#x5C06;&#x5FFD;&#x7565;&#x534F;&#x7A0B;&#x51FD;&#x6570;&#x3002;&#x4F7F;&#x7528;&#x534F;&#x7A0B;&#xFF0C;&#x9700;&#x8981;&#x5305;&#x542B;<code>croutine.c</code>&#x6E90;&#x6587;&#x4EF6;&#x3002;</p><h2 id="configmaxcoroutinepriorities">configMAX_CO_ROUTINE_PRIORITIES</h2><p>&#x534F;&#x7A0B;&#x53EF;&#x7528;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x6570;&#x91CF;&#x3002;&#x534F;&#x7A0B;&#x4E4B;&#x95F4;&#x53EF;&#x4EE5;&#x5171;&#x4EAB;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;&#x534F;&#x7A0B;&#x7684;&#x4F18;&#x5148;&#x7EA7;&#x4E0E;&#x4EFB;&#x52A1;&#x4F18;&#x5148;&#x7EA7;&#x72EC;&#x7ACB;&#x3002;</p><h2 id="configusetimers">configUSE_TIMERS</h2><p>&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x4F7F;&#x7528;&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x529F;&#x80FD;&#x3002;</p><h2 id="configtimertaskpriority">configTIMER_TASK_PRIORITY</h2><p>&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x670D;&#x52A1;&#x4EFB;&#x52A1;&#x7684;&#x4F18;&#x5148;&#x7EA7;</p><h2 id="configtimerqueuelength">configTIMER_QUEUE_LENGTH</h2><p>&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x547D;&#x4EE4;&#x961F;&#x5217;&#x957F;&#x5EA6;</p><h2 id="configtimertaskstackdepth">configTIMER_TASK_STACK_DEPTH</h2><p>&#x8F6F;&#x4EF6;&#x5B9A;&#x65F6;&#x5668;&#x670D;&#x52A1;&#x4EFB;&#x52A1;&#x7684;&#x6808;&#x7A7A;&#x95F4;&#x6DF1;&#x5EA6;</p><h2 id="configkernelinterruptpriority-configmaxsyscallinterruptpriority-&#x548C;-configmaxapicallinterruptpriority">configKERNEL_INTERRUPT_PRIORITY configMAX_SYSCALL_INTERRUPT_PRIORITY &#x548C; configMAX_API_CALL_INTERRUPT_PRIORITY</h2><p>configKERNEL_INTERRUPT_PRIORITY&#x8BBE;&#x7F6E;&#x9879;&#x5728;&#x67D0;&#x4E9B;&#x5904;&#x7406;&#x5668;&#x4E0A;&#x4F7F;&#x7528;&#xFF0C;&#x5982; ARM Cortex-M3&#x3001;PIC24&#x3001;dsPIC&#x3001;PCI32&#x3001;SuperH &#x548C; RX600&#x3002;configMAX_SYSCALL_INTERRUPT_PRIORITY &#x8BBE;&#x7F6E;&#x9879;&#x5728; PIC32, RX600, ARM Cortex-A &#x548C; ARM Cortex-M ports &#x4E0A;&#x4F7F;&#x7528;&#x3002;</p><p><em>ARM Cortex-M3 &#x548C; ARM Cortex-M4 &#x7528;&#x6237;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x8FD9;&#x90E8;&#x5206;&#x5185;&#x5BB9;&#x6700;&#x540E;&#x7684;&#x6CE8;&#x610F;&#x4E8B;&#x9879;</em></p><p>configMAX_API_CALL_INTERRUPT_PRIORITY &#x548C; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x662F;&#x65B0;&#x8BBE;&#x7F6E;&#x9879;&#xFF0C;&#x53EA;&#x5728;&#x7279;&#x5B9A;&#x8BBE;&#x5907;&#x4E0A;&#x4F7F;&#x7528;&#x3002;</p><p>configKERNEL_INTERRUPT_PRIORITY &#x9700;&#x8981;&#x8BBE;&#x7F6E;&#x4E3A;&#x6700;&#x4F4E;&#x4F18;&#x5148;&#x7EA7;&#x3002;</p><p>&#x6CE8;&#x610F;&#xFF0C;&#x63A5;&#x4E0B;&#x6765;&#x8BA8;&#x8BBA;&#x7684;API&#x53EA;&#x6709;&#x4EE5;<code>FromISR</code>&#x7ED3;&#x5C3E;&#x7684;&#x624D;&#x80FD;&#x5728;&#x4E2D;&#x65AD;&#x670D;&#x52A1;&#x51FD;&#x6570;&#x4E2D;&#x8C03;&#x7528;&#x3002;</p><p><strong> &#x53EA;&#x5B9E;&#x73B0; configKERNEL_INTERRUPT_PRIORITY &#x7684;&#x60C5;&#x51B5; </strong></p><p>configKERNEL_INTERRUPT_PRIORITY &#x8BBE;&#x7F6E;RTOS&#x5185;&#x6838;&#x4F7F;&#x7528;&#x7684;&#x4E2D;&#x65AD;&#x4F18;&#x5148;&#x7EA7;&#x3002;&#x4E2D;&#x65AD;&#x8C03;&#x7528;&#x7684;API&#x51FD;&#x6570;&#x5FC5;&#x987B;&#x6267;&#x884C;&#x5728;&#x8FD9;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#x4E0A;&#xFF0C;&#x4E2D;&#x65AD;&#x4E0D;&#x4F1A;&#x8C03;&#x7528;&#x9AD8;&#x4E8E;&#x8FD9;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#x7684;API&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x5728;RTOS&#x5185;&#x6838;&#x6267;&#x884C;&#x671F;&#x95F4;&#xFF0C;&#x8FD9;&#x4E9B;API&#x51FD;&#x6570;&#x4E0D;&#x4F1A;&#x5F97;&#x5230;&#x5EF6;&#x671F;&#x6267;&#x884C;&#x3002;</p><p><strong> &#x540C;&#x4E8B;&#x5B9E;&#x73B0; configKERNEL_INTERRUPT_PRIORITY &#x548C; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x7684;&#x60C5;&#x51B5;</strong></p><p>configKERNEL_INTERRUPT_PRIORITY &#x8BBE;&#x7F6E;&#x4E2D;&#x65AD;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;configMAX_SYSCALL_INTERRUPT_PRIORITY &#x8BBE;&#x7F6E;&#x4E2D;&#x65AD;&#x5B89;&#x5168;API&#x53EF;&#x4EE5;&#x88AB;&#x8C03;&#x7528;&#x7684;&#x4E2D;&#x65AD;&#x7684;&#x6700;&#x9AD8;&#x4F18;&#x5148;&#x7EA7;</p><p>&#x5F53; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x7684;&#x4F18;&#x5148;&#x7EA7;&#x8BBE;&#x7F6E;&#x5927;&#x4E8E; configKERNEL_INTERRUPT_PRIORITY &#x65F6;&#xFF0C;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x4E2D;&#x65AD;&#x5D4C;&#x5957;&#xFF0C;&#x8FD9;&#x610F;&#x5473;&#x7740;&#xFF0C;RTOS&#x5185;&#x6838;&#x65E0;&#x6CD5;&#x5B8C;&#x5168;&#x7981;&#x7528;&#x4E2D;&#x65AD;&#xFF0C;&#x5373;&#x4F7F;&#x5904;&#x5728;&#x4E34;&#x754C;&#x4EE3;&#x7801;&#x6BB5;&#x4E2D;&#x3002;</p><p>&#x7B80;&#x800C;&#x8A00;&#x4E4B;&#xFF0C;&#x4F18;&#x5148;&#x7EA7;&#x6BD4; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x8BBE;&#x7F6E;&#x9AD8;&#x7684;&#x4E2D;&#x65AD;&#x4E0D;&#x80FD;&#x8C03;&#x7528;API&#xFF0C;&#x56E0;&#x4E3A;&#x4E0D;&#x4F1A;&#x88AB;RTOS&#x5185;&#x6838;&#x5EF6;&#x8FDF;&#x6267;&#x884C;&#x3002;</p><p>&#x4E3E;&#x4F8B;&#x8BF4;&#x660E;&#xFF0C;&#x5047;&#x8C61;&#x4E00;&#x4E2A;&#x5904;&#x7406;&#x5668;&#x5177;&#x6709;8&#x4E2A;&#x4E2D;&#x65AD;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;0&#x6700;&#x4F4E;&#xFF0C;7&#x6700;&#x9AD8;&#xFF0C;&#x4E0B;&#x56FE;&#x5C55;&#x793A;&#x4E86;&#x54EA;&#x4E9B;&#x53EF;&#x4EE5;&#x505A;&#x54EA;&#x4E9B;&#x4E0D;&#x53EF;&#x4EE5;&#x505A;&#xFF1A;</p><p><img src="http://www.freertos.org/Interrupt-priorities-interrupt-nesting.jpg"></p><p>&#x8FD9;&#x4E9B;&#x914D;&#x7F6E;&#x53C2;&#x6570;&#x63D0;&#x4F9B;&#x4E86;&#x5F88;&#x7075;&#x6D3B;&#x7684;&#x4E2D;&#x65AD;&#x5904;&#x7406;&#xFF1A;</p><ul><li>&#x4E2D;&#x65AD;&#x5904;&#x7406;&#x53EF;&#x4EE5;&#x4EA4;&#x7ED9;&#x4EFB;&#x52A1;&#x6765;&#x505A;&#x3002;&#x4E2D;&#x65AD;&#x5524;&#x9192;&#x4EFB;&#x52A1;&#xFF0C;&#x4E2D;&#x65AD;&#x670D;&#x52A1;&#x51FD;&#x6570;&#x672C;&#x8EAB;&#x5E94;&#x8BE5;&#x7EA6;&#x77ED;&#x8D8A;&#x597D;&#xFF0C;&#x53EA;&#x7528;&#x6765;&#x6355;&#x6349;&#x6570;&#x636E;&#xFF0C;&#x800C;&#x5904;&#x7406;&#x4EA4;&#x7ED9;&#x4EFB;&#x52A1;&#x6765;&#x505A;--&#x4E2D;&#x65AD;&#x5904;&#x7406;&#x5728;&#x65F6;&#x95F4;&#x4E0A;&#x662F;&#x8FDE;&#x7EED;&#x7684;&#x3002;&#x597D;&#x5904;&#x5728;&#x4E8E;&#xFF0C;&#x5728;&#x4EFB;&#x52A1;&#x5904;&#x7406;&#x6267;&#x884C;&#x65F6;&#xFF0C;&#x6240;&#x6709;&#x7684;&#x4E2D;&#x65AD;&#x90FD;&#x53EF;&#x4EE5;&#x4FDD;&#x6301;&#x4F7F;&#x80FD;&#x3002;
</li>
<li>&#x5BF9;&#x4E8E;&#x4F7F;&#x7528; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x7684;&#x5904;&#x7406;&#x5668;&#xFF0C;&#x4F18;&#x5148;&#x7EA7;&#x5728; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x548C; RTOS &#x5185;&#x6838;&#x4E2D;&#x65AD;&#x4F18;&#x5148;&#x7EA7;&#x4E4B;&#x95F4;&#x7684;&#x4E2D;&#x65AD;&#x53EF;&#x4EE5;&#x5D4C;&#x5957;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8C03;&#x7528;API&#x3002;&#x4F18;&#x5148;&#x7EA7;&#x5728;configMAX_SYSCALL_INTERRUPT_PRIORITY &#x4E4B;&#x4E0A;&#x7684;&#x4E2D;&#x65AD;&#x4E0D;&#x4F1A;&#x88AB;&#x5EF6;&#x8FDF;&#x5904;&#x7406;&#x3002;
</li>
<li>&#x8FD0;&#x884C;&#x5728;&#x6700;&#x5927;&#x7CFB;&#x7EDF;&#x8C03;&#x7528;&#x4F18;&#x5148;&#x7EA7; configMAX_SYSCALL_INTERRUPT_PRIORITY &#x4E4B;&#x4E0A;&#x7684;&#x4E2D;&#x65AD;&#x670D;&#x52A1;&#x51FD;&#x6570;&#x4E0D;&#x4F1A;&#x88AB;RTOS&#x5185;&#x6838;&#x6240;&#x5C4F;&#x853D;&#xFF0C;&#x56E0;&#x6B64;&#x4E2D;&#x65AD;&#x54CD;&#x5E94;&#x4E0D;&#x4F1A;&#x53D7;&#x5F71;&#x54CD;&#x3002;&#x8FD9;&#x6837;&#x7684;&#x8BBE;&#x8BA1;&#x4E3B;&#x8981;&#x662F;&#x4E3A;&#x4E86;&#x90A3;&#x4E9B;&#x9700;&#x8981;&#x9AD8;&#x7CBE;&#x5EA6;&#x7684;&#x4E2D;&#x65AD;&#x4EFB;&#x52A1;&#xFF0C;&#x6BD4;&#x5982;&#x7535;&#x673A;&#x7684;&#x8F6C;&#x5411;&#x63A7;&#x5236;&#x3002;&#x5F53;&#x7136;&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x4E2D;&#x65AD;&#x670D;&#x52A1;&#x51FD;&#x6570;&#x4E0D;&#x53EF;&#x4EE5;&#x8C03;&#x7528;freeRTOS&#x7684;API&#x51FD;&#x6570;&#x3002;
</li></ul>
<p>&#x5229;&#x7528;&#x8FD9;&#x79CD;&#x673A;&#x5236;&#x8981;&#x6C42;&#x9075;&#x5B88;&#x5982;&#x4E0B;&#x89C4;&#x5219;&#xFF1A;<strong>&#x53EA;&#x8981;&#x4F7F;&#x7528;freeRTOS&#x7684;API&#x51FD;&#x6570;&#xFF0C;&#x90A3;&#x4E48;&#x4F18;&#x5148;&#x7EA7;&#x5C31;&#x5FC5;&#x987B;&#x5C0F;&#x4E8E;&#x7B49;&#x4E8E;configMAX_SYSCALL_INTERRUPT_PRIORITY&#x6240;&#x8BBE;&#x7F6E;&#x7684;&#x4F18;&#x5148;&#x7EA7;</strong></p><p><em>&#x5BF9;ARM Cortex-M3 &#x548C; ARM Cortex-M4&#x7528;&#x6237;&#x7684;&#x5C0F;&#x63D0;&#x793A;&#xFF1A;</em> &#x56E0;&#x4E3A;ARM Cortex-M3&#x3001;ARM Cortex-M4&#x4F7F;&#x7528;&#x4F4E;&#x6570;&#x5B57;&#x8868;&#x793A;&#x9AD8;&#x4F18;&#x5148;&#x7EA7;(&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x5F88;&#x591A;&#x5904;&#x7406;&#x5668;&#x5177;&#x6709;&#x8FD9;&#x6837;&#x7684;&#x7279;&#x6027;)&#xFF0C;&#x56E0;&#x6B64;&#x5982;&#x679C;&#x4F60;&#x8BBE;&#x7F6E;&#x4F18;&#x5148;&#x7EA7;&#x4E3A;0&#xFF0C;&#x53CD;&#x800C;&#x662F;&#x7CFB;&#x7EDF;&#x4E2D;&#x7684;&#x6700;&#x9AD8;&#x4F18;&#x5148;&#x7EA7;&#xFF0C;&#x8FD9;&#x4F1A;&#x6F5C;&#x5728;&#x7684;&#x5BFC;&#x81F4;&#x4F60;&#x7684;&#x7CFB;&#x7EDF;&#x5D29;&#x6E83;&#xFF0C;&#x5982;&#x679C;&#x8FD9;&#x4E2A;&#x4F18;&#x5148;&#x7EA7;&#x5927;&#x4E8E;configMAX_SYSCALL_INTERRUPT_PRIORITY&#x3002; &#x8BE6;&#x7EC6;&#x7684;&#x4F7F;&#x7528;&#x8BF4;&#x660E;&#x8BF7;&#x53C2;&#x9605;&#x201C;ARM Corte-M&#x7CFB;&#x5217;&#x5904;&#x7406;&#x5668;&#x7684;&#x4E2D;&#x65AD;&#x4F18;&#x5148;&#x7EA7;&#x8BBE;&#x7F6E;&#x201D;&#x3002;</p><h2 id="configassert">configASSERT</h2><p>&#x5728;&#x8BED;&#x4E49;&#x4E0A;&#xFF0C;<code>configASSERT</code>&#x548C;&#x6807;&#x51C6;C&#x7684;<code>assert<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x5B8F;&#x76F8;&#x540C;&#x3002;&#x5982;&#x679C;&#x53C2;&#x6570;&#x4E3A;0(false)&#xFF0C;&#x5219;&#x4F1A;&#x89E6;&#x53D1;&#x3002;</p><p><code>configASSERT<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x5E38;&#x7528;&#x6765;&#x68C0;&#x67E5;&#x53C2;&#x6570;&#x7684;&#x5408;&#x6CD5;&#x6027;&#xFF0C;&#x5728;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5F00;&#x53D1;&#x524D;&#x671F;&#xFF0C;&#x5F3A;&#x70C8;&#x63A8;&#x8350;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x5B8F;&#xFF0C;&#x53EF;&#x4EE5;&#x5E2E;&#x52A9;&#x5F00;&#x53D1;&#x4EBA;&#x5458;&#x5FEB;&#x901F;&#x5B9A;&#x4F4D;&#x9690;&#x85CF;&#x7684;&#x9519;&#x8BEF;&#x3002;&#x5728;&#x4EA7;&#x54C1;&#x53D1;&#x5E03;&#x540E;&#x671F;&#xFF0C;&#x53EA;&#x9700;&#x8981;&#x7B80;&#x5355;&#x7684;&#x5C06;&#x8FD9;&#x4E2A;&#x5B8F;&#x5B9A;&#x4E49;&#x4E3A;&#x7A7A;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x8F7B;&#x677E;&#x53D6;&#x6D88;&#x8FD9;&#x4E2A;&#x5B8F;&#x7684;&#x529F;&#x80FD;&#x3002;</p><p><code>configASSERT<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x53EF;&#x4EE5;&#x5B9A;&#x4E49;&#x4E3A;&#xFF0C;&#x5F53;&#x6761;&#x4EF6;&#x4E3A;false&#x65F6;&#xFF0C;&#x5411;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x8F93;&#x51FA;&#x5F53;&#x524D;&#x7684;&#x6587;&#x4EF6;&#x540D;(<strong>FILE</strong> )&#x53CA;&#x884C;&#x53F7;(<strong>LINE</strong>)&#xFF0C;&#x8FD9;&#x6709;&#x52A9;&#x4E8E;&#x5F00;&#x53D1;&#x8005;&#x5B9A;&#x4F4D;&#x9519;&#x8BEF;&#x3002;&#x8FD9;&#x4E2A;&#x5B8F;&#x53EF;&#x4EE5;&#x5728;&#x4EFB;&#x4F55;&#x5408;&#x9002;&#x7684;&#x5730;&#x65B9;&#x4F7F;&#x7528;&#x3002;</p><p>&#x540C;&#x5E38;&#xFF0C;&#x5F53;&#x8FD9;&#x4E2A;&#x5B8F;&#x89E6;&#x53D1;&#x540E;&#xFF0C;&#x5EFA;&#x8BAE;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x505C;&#x5728;&#x8FD9;&#x4E2A;&#x5730;&#x65B9;(&#x4F8B;&#x5982;&#x8FDB;&#x5165;&#x4E00;&#x4E2A;&#x6B7B;&#x5FAA;&#x73AF;)&#xFF0C;&#x8FD9;&#x6837;&#x6709;&#x4E24;&#x70B9;&#x597D;&#x5904;&#xFF0C;&#x7B2C;&#x4E00;&#x65B9;&#x4FBF;&#x8C03;&#x8BD5;&#xFF0C;&#x7B2C;&#x4E8C;&#xFF0C;&#x9632;&#x6B62;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#xFF0C;&#x5BFC;&#x81F4;&#x5176;&#x4ED6;&#x95EE;&#x9898;&#x3002;</p><p>&#x5F53;&#x7136;&#xFF0C;&#x8FD9;&#x4E2A;&#x5B8F;&#x7684;&#x4F7F;&#x7528;&#x4F1A;&#x5BFC;&#x81F4;&#x6267;&#x884C;&#x65F6;&#x95F4;&#x589E;&#x52A0;&#xFF0C;&#x540C;&#x4E8B;&#x589E;&#x52A0;&#x4EE3;&#x7801;&#x91CF;&#xFF0C;&#x56E0;&#x6B64;&#xFF0C;&#x8FD9;&#x4E2A;&#x5B8F;&#x53EA;&#x5EFA;&#x8BAE;&#x5728;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5F00;&#x53D1;&#x671F;&#x95F4;&#x4F7F;&#x7528;&#x3002;</p><pre><code>/* &#x5F53;&#x6761;&#x4EF6;&#x4E3A;0&#x65F6;&#xFF0C;&#x8C03;&#x7528; vAssertCalled<span class="token punctuation">(</span><span class="token punctuation">)</span> &#x8F93;&#x51FA;&#x5F53;&#x524D;&#x884C;&#x53F7;&#x53CA;&#x6587;&#x4EF6;&#xFF0C;vAssertCalled<span class="token punctuation">(</span><span class="token punctuation">)</span>&#x53EF;&#x4EE5;&#x901A;&#x8FC7;&#x4E32;&#x53E3;&#x6216;&#x8005;&#x663E;&#x793A;&#x5668;&#x7B49;&#x8F93;&#x51FA;&#x9519;&#x8BEF;&#x4FE1;&#x606F;&#xFF0C;&#x7531;&#x5F00;&#x53D1;&#x8005;&#x81EA;&#x884C;&#x51B3;&#x5B9A; */
<span class="token comment" spellcheck="true">#define configASSERT( ( x ) )     if( ( x ) == 0 ) vAssertCalled( __FILE__, __LINE__ )</span></code></pre>
<p>&#x5F53;freeRTOS&#x8FD0;&#x884C;&#x5728;&#x8C03;&#x8BD5;&#x5668;&#x7684;&#x63A7;&#x5236;&#x4E0B;&#xFF0C;&#x5EFA;&#x8BAE;&#x5C06;&#x5B8F;&#x5B9A;&#x4E49;&#x4E3A;&#x5982;&#x4E0B;&#x5F62;&#x5F0F;&#xFF0C;&#x8FD9;&#x5C06;&#x6709;&#x52A9;&#x4E8E;&#x5FEB;&#x901F;&#x5B9A;&#x4F4D;&#x5230;&#x5F02;&#x5E38;&#x4EE3;&#x7801;&#xFF1A;</p><pre><code>/* &#x5E26;&#x6709;&#x6B7B;&#x5FAA;&#x73AF;&#xFF0C;&#x8BA9;&#x7A0B;&#x5E8F;&#x201C;&#x505C;&#x4E0B;&#x6765;&#x201D; */
<span class="token comment" spellcheck="true">#define configASSERT( ( x ) )     if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }</span></code></pre>
<h2 id="configincludeapplicationdefinedprivilegedfunctions">configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS</h2><p>configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS &#x53EA;&#x4F1A;&#x88AB;freeRTOS &#x7684; MPU &#x4F7F;&#x7528;&#x5230;&#x3002;</p><p>&#x5982;&#x679C;&#x5C06;&#x8BE5;&#x8BBE;&#x7F6E;&#x9879;&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5F00;&#x53D1;&#x8005;&#x5FC5;&#x987B;&#x63D0;&#x4F9B;&quot;application_defined_privileged_functions.h&quot;&#x5934;&#x6587;&#x4EF6;&#xFF0C;&#x5305;&#x542B;&#x5F00;&#x53D1;&#x8005;&#x9700;&#x8981;&#x5B9E;&#x73B0;&#x7684;&#x7279;&#x6743;&#x6A21;&#x5F0F;&#x51FD;&#x6570;&#x58F0;&#x660E;&#xFF0C;&#x5F53;&#x7136;&#xFF0C;&#x5177;&#x4F53;&#x51FD;&#x6570;&#x4EE3;&#x7801;&#x5B9E;&#x73B0;&#x4E5F;&#x662F;&#x5FC5;&#x987B;&#x7684;&#x3002;</p><p>&#x5728;&#x201C;application_defined_privileged_functions.h&#x201D;&#x4E2D;&#x58F0;&#x660E;&#x7684;&#x51FD;&#x6570;&#x5FC5;&#x987B;&#x4E3B;&#x52A8;&#x7684;&#x4FDD;&#x5B58;&#x548C;&#x6062;&#x590D;&#x5904;&#x7406;&#x5668;&#x7684;&#x7279;&#x6743;&#x72B6;&#x6001;&#xFF0C;&#x4F7F;&#x7528;<code>prvRaisePrivilege<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x51FD;&#x6570;&#xFF0C;&#x53CA;<code>portRESET_PRIVILEGE<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x5B8F;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x5982;&#x679C;&#x4E00;&#x4E2A;&#x5E93;&#x63D0;&#x4F9B;&#x8D85;&#x51FA;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x5F00;&#x53D1;&#x8005;&#x63A7;&#x5236;&#x7684;RAM&#x8BBF;&#x95EE;&#x7684;&#x6253;&#x5370;&#x529F;&#x80FD;&#xFF0C;&#x56E0;&#x4E3A;&#x65E0;&#x6CD5;&#x5206;&#x914D;&#x5185;&#x5B58;&#x4FDD;&#x62A4;&#x7528;&#x6237;&#x6A21;&#x5F0F;&#x4E0B;&#x7684;&#x4EFB;&#x52A1;&#xFF0C;&#x8FD9;&#x4E2A;&#x6253;&#x5370;&#x529F;&#x80FD;&#x51FD;&#x6570;&#x9700;&#x8981;&#x4F7F;&#x7528;&#x4E0B;&#x9762;&#x7684;&#x5F62;&#x5F0F;&#x5C01;&#x88C5;&#x8D77;&#x6765;&#xFF1A;</p><pre><code>void MPU_debug_printf<span class="token punctuation">(</span> const char *pcMessage <span class="token punctuation">)</span>
<span class="token punctuation">{</span>
/* &#x5F53;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x65F6;&#xFF0C;&#x5148;&#x4FDD;&#x5B58;&#x5904;&#x7406;&#x5668;&#x7684;&#x7279;&#x6743;&#x7B49;&#x7EA7; */
BaseType_t xRunningPrivileged <span class="token operator">=</span> prvRaisePrivilege<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

    /* &#x8C03;&#x7528;&#x5E93;&#x51FD;&#x6570;&#xFF0C;&#x6B64;&#x65F6;&#x5E93;&#x51FD;&#x6570;&#x5177;&#x6709;&#x5168;&#x90E8;&#x7684;&#x5185;&#x5B58;&#x8BBF;&#x95EE;&#x6743;&#x9650; */
    debug_printf<span class="token punctuation">(</span> pcMessage <span class="token punctuation">)</span><span class="token punctuation">;</span>

    /* &#x6062;&#x590D;&#x5904;&#x7406;&#x5668;&#x7684;&#x7279;&#x6743;&#x7B49;&#x7EA7; */
    portRESET_PRIVILEGE<span class="token punctuation">(</span> xRunningPrivileged <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span></code></pre>
<p>&#x4E0D;&#x5EFA;&#x8BAE;&#x5728;&#x53D1;&#x5E03;&#x7684;&#x5E94;&#x7528;&#x7A0B;&#x5E8F;&#x4E2D;&#x8FD9;&#x6837;&#x4F7F;&#x7528;&#xFF0C;&#x800C;&#x4EC5;&#x4EC5;&#x5728;&#x5F00;&#x53D1;&#x8FC7;&#x7A0B;&#x4E2D;&#x4F7F;&#x7528;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x89C4;&#x907F;&#x4E86;&#x5904;&#x7406;&#x5668;&#x7684;&#x5185;&#x5B58;&#x4FDD;&#x62A4;&#x3002;</p><h2 id="include-parameters">INCLUDE Parameters</h2><p>&#x4EE5;<code>INCLUDE</code>&#x5F00;&#x5934;&#x7684;&#x5B8F;&#xFF0C;&#x7528;&#x6765;&#x88C1;&#x526A;&#x5185;&#x6838;&#xFF0C;&#x53EF;&#x4EE5;&#x5C06;&#x4E0D;&#x9002;&#x7528;&#x7684;&#x529F;&#x80FD;&#x5728;&#x7F16;&#x8BD1;&#x65F6;&#x6392;&#x9664;&#x5728;&#x5916;&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x5B8F;&#x5177;&#x6709;&#x5982;&#x4E0B;&#x5F62;&#x5F0F;&#xFF1A;</p><p><code>INCLUDE_FunctionName</code>&#xFF0C;&#x5176;&#x4E2D;<code>FunctionName</code>&#x6697;&#x793A;&#xFF0C;&#x8FD9;&#x4E2A;API&#x6216;&#x8005;&#x4E00;&#x4E9B;&#x5217;API&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x6027;&#x7684;&#x5305;&#x542B;&#xFF1A;&#x5C06;&#x5B8F;&#x8BBE;&#x7F6E;&#x4E3A;1&#xFF0C;&#x5219;&#x5305;&#x542B;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;0&#xFF0C;&#x5219;&#x4E0D;&#x5305;&#x542B;&#x3002;&#x8FD9;&#x4F1A;&#x51CF;&#x5C11;&#x5185;&#x5B58;&#x5360;&#x7528;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x4F7F;&#x7528;<code>vTaskDelete<span class="token punctuation">(</span><span class="token punctuation">)</span></code>&#x51FD;&#x6570;&#xFF0C;&#x5219;&#x9700;&#x8981;&#x8BBE;&#x7F6E;<code><span class="token comment" spellcheck="true">#define INCLUDE_vTaskDelete    1</span></code>&#xFF0C;&#x53CD;&#x4E4B;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E3A;<code><span class="token comment" spellcheck="true">#define INCLUDE_vTaskDelete    1</span></code>&#x3002;</p>
                                
                                </section>
                            
                        </div>
                    </div>
                
            </div>

            
                
                <a href="../源代码组织结构/源代码组织结构.html" class="navigation navigation-prev " aria-label="Previous page: 源代码组织结构">
                    <i class="fa fa-angle-left"></i>
                </a>
                
                
                <a href="跟踪特性.html" class="navigation navigation-next " aria-label="Next page: 跟踪特性">
                    <i class="fa fa-angle-right"></i>
                </a>
                
            
        
    </div>

    <script>
        var gitbook = gitbook || [];
        gitbook.push(function() {
            gitbook.page.hasChanged({"page":{"title":"配置文件","level":"1.4.2","depth":2,"next":{"title":"跟踪特性","level":"1.4.3","depth":2,"path":"进阶/高级/跟踪特性.md","ref":"进阶/高级/跟踪特性.md","articles":[]},"previous":{"title":"源代码组织结构","level":"1.4.1","depth":2,"path":"进阶/源代码组织结构/源代码组织结构.md","ref":"进阶/源代码组织结构/源代码组织结构.md","articles":[]},"dir":"ltr"},"config":{"plugins":["prismx","-highlight","-search","duoshuo","ga","theme-comscore"],"styles":{"website":"styles/website.css","ebook":"styles/ebook.css","pdf":"styles/pdf.css","mobi":"styles/mobi.css","epub":"styles/epub.css"},"pluginsConfig":{"ga":{"configuration":"auto","token":"UA-80700049-1"},"duoshuo":{"short_name":"tangguocheng","theme":"default"},"prismx":{"css":["prismjs/themes/prism-tomorrow.css"]},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-comscore":{},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"mobi":{"fontSize":12,"footerTemplate":null,"headerTemplate":null,"margin":{"bottom":36,"left":62,"right":62,"top":36},"pageNumbers":false,"paperSize":"a4"},"theme":"default","author":"tangguocheng","pdf":{"pageBreaksBefore":"/","headerTemplate":null,"paperSize":"a4","margin":{"right":62,"left":62,"top":36,"bottom":36},"fontSize":12,"fontFamily":"Arial","footerTemplate":null,"chapterMark":"pagebreak","pageNumbers":false},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"freeRTOS中文文档","language":"Chinese","links":{"sidebar":{"博客":"http://www.xn--4gqa63c686ta68iba.ren/"}},"gitbook":"*","description":"freeRTOS中文文档","extension":null},"file":{"path":"进阶/高级/配置文件.md","mtime":"2016-09-08T05:55:27.591Z","type":"markdown"},"gitbook":{"version":"3.2.0","time":"2016-09-18T09:07:11.640Z"},"basePath":"../..","book":{"language":""}});
        });
    </script>
</div>

        
    <script src="../../gitbook/gitbook.js"></script>
    <script src="../../gitbook/theme.js"></script>
    
        
        <script src="../../gitbook/gitbook-plugin-duoshuo/duoshuo.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-ga/plugin.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-sharing/buttons.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
        
    
        
        <script src="../../gitbook/gitbook-plugin-theme-comscore/test.js"></script>
        
    

    </body>
</html>

